UFO Resistance is a tower defence game I created to explore data collection and analysis to improve the game through further development.
To get to data analysis quickly, I prototyped a basic project using some online tutorials. This gave the base game that I could expand on to improve the game over multiple iterations.
I ran various playtests with gradually more people, whilst gathering both quantitative and qualitative data through values gathered at the playtests, and feedback from participants left verbally and through forms.
By the end of the project, I believe I had successfully improved the game, making it a more balanced experience. I found that collecting data and running playtests were extremely helpful in improving game balance and feel.
As a tower defence game, the primary mechanic is buying turrets and placing them in optimal locations to defend the players base or objective from enemies.
There are three choices for turret:
Players can also upgrade turrets to give them boosted stats or different properties. This can include increased damage, range, firerate, or even special abilities such as rapid fire or AOE effects.
Originally upgrading used the same currency as buying, however after data analysis I realised they weren’t being utilised as much as I hoped. I added upgrade tokens to encourage players to upgrade turrets instead which had a positive impact.
A lot of the iterative development came through balancing these turrets. To start with players used lots of basic turrets and rarely used the laser turret. I adjusted the stats of all three turrets over different iterations which resulted in more variety being used.
While only a prototype project, I wanted to include a variety of level layouts so I could also analyse level related data. This would let me learn how the layout impacted difficulty or turret effectiveness.
This also gave players enough variation and lessen repetition, letting them play for longer and giving me more data to analyse.
Level data was particularly interesting as I learnt that some layouts proved more challenging than others which worked for later layouts as I intended to increase the difficulty as the player progressed through the game.
I also created at tutorial level which introduces the player to all the mechanics and enemy types.
Webhook Data
I had intended to use the built in Unity Analytics dashboard to collect quantitative data, however I found it too slow and unreliable, and difficult to distinguish between builds.
As an alternative, I created a webhook script that would gather data and send it to an outside source. I used discord as this let me separate it into channels and be notified when new data arrived.
This didn’t create graphs automatically like Unity Analytics; however, this gave me more control and I created my own using Microsoft Excel. Eventually I also added csv functionality to the script so I could streamline the graph creation.
The data and analysis can be seen in my project report linked below. There is also a link to my webhook script I used to collect data.
Heatmaps
To learn more about the levels, I used a heatmap script to find problem areas. I used it for both enemy deaths and turret placements which provided useful information to find chokepoints or strategies players were using.
Feedback Forms
Finally, I asked participants to fill out a feedback form each play session to gather their feedback on the current build. This let me get their thoughts on the game, whether they found it fun or if anything felt unbalanced and annoying.
If I was able to watch players, I took notes on their verbal feedback at the time and also used it to improve the game.